package root.server;


public class VerificadorDadosEntrada {

	public static void verificaLoginNomeEndereco(String login, String nome, String endereco)throws Exception{
		if (!stringValida(login)) {
			throw new Exception("Login inválido");
		} else if (!stringValida(nome)) {
			throw new Exception("Nome inválido");
		} else if (!stringValida(endereco)) {
			throw new Exception("Nome inválido");
		}
	}
	
	public static boolean stringValida(String login) {
		boolean resp = true;
		if (login == null || login.equals("")) {
			resp = false;
		}
		return resp;

	}
	
	public static void verificaLogin(String login) throws Exception{
		if (!stringValida(login)) {
			throw new Exception("Login inválido");
		}
	}
	public static void verificaAtributo(String atributo) throws Exception{
		if (!stringValida(atributo)) {
			throw new Exception("Atributo inválido");
		}else if(!atributo.equals("nome") && !atributo.equals("endereco")){
			throw new Exception("Atributo inexistente");
		}
	}

	public static void verificaIdSessao(String iD) throws Exception{
		if(!stringValida(iD)){
			throw new Exception("Sessão inválida");
		}
		
	}
	public static void verificaIdItem(String idItem)throws Exception{
		if(!stringValida(idItem)){
			throw new Exception("Identificador do item é inválido");
		}
	}
	
	public static void verificaAtributoItem(String atributo) throws Exception{
		if (!stringValida(atributo)) {
			throw new Exception("Atributo inválido");
		}else if(!atributo.equals("nome") && !atributo.equals("descricao") && !atributo.equals("categoria")){
			throw new Exception("Atributo inexistente");
		}
	}
	
	public static void verificaLocalizarUsuario(String idSessao,String chave, String atributo)throws Exception{
		if (!stringValida(idSessao)) {
			throw new Exception("Sessão inválida");
		} else if (!stringValida(chave)) {
			throw new Exception("Palavra-chave inválida");
		} else if (!stringValida(atributo)) {
			throw new Exception("Atributo inválido");
		} else if (!atributo.equals("nome") && !atributo.equals("endereco")) {
			throw new Exception("Atributo inexistente");
		}
	}
	
	public static void verificaIdSessaoLogin(String idSessao,String login) throws Exception{
		verificaIdSessao(idSessao);
		verificaLogin(login);
		
	}
	
	public static void verificaTipoEmprestimo(String tipo)throws Exception{
		if(!stringValida(tipo))throw new Exception("Tipo inválido");
		if (!tipo.equals("emprestador") && !tipo.equals("beneficiado") && ! tipo.equals("todos")) {
			throw new Exception("Tipo inexistente");
		}
	}

	public static void verificaIdEmprestimo(String idEmprestimo)throws Exception {
	//	if(!stringValida(idEmprestimo))throw new Exception("Identificador da requisição de empréstimo é inválido");
	if(!stringValida(idEmprestimo))throw new Exception("Identificador do empréstimo é inválido");
		
	}

	public static void verificaOrdenacao(String chave, String atributo,
			String tipoOrdenacao, String criterioOrdenacao) throws Exception {
		if (!stringValida(chave)) {
			throw new Exception("Chave inválida");
		}
		if (!stringValida(atributo)) {
			throw new Exception("Atributo inválido");
		}
		if(!atributo.equals("nome") && !atributo.equals("descricao") && !atributo.equals("categoria")){
			throw new Exception("Atributo inexistente");
		}
		if (!stringValida(tipoOrdenacao)) {
			throw new Exception("Tipo inválido de ordenação");
		}
		if (!(tipoOrdenacao.equals("crescente") || tipoOrdenacao
				.equals("decrescente"))) {
			throw new Exception("Tipo de ordenação inexistente");
		}
		if (!stringValida(criterioOrdenacao)) {
			throw new Exception("Critério inválido de ordenação");
		}
		if (!(criterioOrdenacao.equals("reputacao") || criterioOrdenacao
				.equals("dataCriacao"))) {
			throw new Exception("Critério de ordenação inexistente");
		}

		
		
		
	}
	public static void verificaDestinatario(String destinatario) throws Exception{
		if (!stringValida(destinatario)) {
			throw new Exception("Destinatário inválido");
		}
	}
	public static void verificaAssunto(String assunto) throws Exception{
		if (!stringValida(assunto)) {
			throw new Exception("Assunto inválido");
		}
	}
	public static void verificaMensagem(String mensagem) throws Exception{
		if (!stringValida(mensagem)) {
			throw new Exception("Mensagem inválida");
		}
	}
	public static void verificaIdRequisicaoEmprestimo(String idEmprestimo)throws Exception {
		if(!stringValida(idEmprestimo))throw new Exception("Identificador da requisição de empréstimo é inválido");		
	}
	public static void verificaTipo(String tipo)throws Exception{
		if(!stringValida(tipo))throw new Exception("Tipo inválido");
	}
	public static void verificaIdTopico(String tipo)throws Exception{
		if(!stringValida(tipo))throw new Exception("Identificador do tópico é inválido");
	}
	
	
	public static void verificaPublicarPedido(String nomeItem,String descricaoItem)throws Exception{
		if(!stringValida(nomeItem))throw new Exception("Nome inválido");
		if(!stringValida(descricaoItem))throw new Exception("Descrição inválida");
		
	}
	
	public static void verificaCategoria(String categoria) throws Exception{
		if(!VerificadorDadosEntrada.stringValida(categoria)){
			throw new Exception("Categoria inválida");
		}
		if (!(categoria.equals("amigos") || categoria.equals("global"))) {
			throw new Exception("Categoria inexistente");
		}
	}
}
